﻿#define _CRT_SECURE_NO_WARNINGS 1



//6 - 1 简单输出整数
//void PrintN(int N)
//{
//	for (int i = 1; i <= N; i++)
//	{
//		printf("%d", i);
//		if (i == N)
//			break;
//		printf("\n");
//	}
//}


//本题要求实现一个函数，计算阶数为n，系数为a[0] ... a[n]的多项式f(x)=∑ i = 0n​(a[i]×xi) 在x点的值。
//double f(int n, double a[], double x)
//{
//	double sum = 0.0;
//	double sx = 1.0;
//	double b;
//	for (int i = 0; i <= n; i++)
//	{
//		b = a[i] * sx;
//		sum += b;
//		sx *= 1.1;
//	}
//	return sum;
//}


//int Sum ( int List[], int N )
//{
//	int sum = 0;
//	for (int i = 0; i < N; i++)
//		sum += List[i];
//	return sum;
//}


//本题要求实现一个函数，求N个集合元素S[]的平均值，其中集合元素的类型为自定义的ElementType。
//typedef float ElementType;
//
//ElementType Average(ElementType S[], int N)
//{
//	float sum = 0.0;
//	for (int i = 0; i < N; i++)
//		sum += S[i];
//	return sum / N;
//}

//本题要求实现一个函数，求N个集合元素S[]中的最大值，其中集合元素的类型为自定义的ElementType。
//typedef float ElementType;
//
//ElementType Max(ElementType S[], int N)
//{
//	float max=S[0];
//	for (int i = 0; i < N; i++)
//	{
//		if (max < S[i])
//			max = S[i];
//	}
//	return max;
//}



//本题要求实现一个函数，判断任一给定整数N是否满足条件：它是完全平方数，又至少有两位数字相同，如144、676等。
//#include<math.h>
//int IsTheNumber(const int N)
//{
//	int a = sqrt(N);
//	int flag = 0;
//	int b = N;
//	int count=0;
//	while (b)
//	{
//		count++;
//		b /= 10;
//	}
//	b = N;
//	int arr[100];
//	if (a * a == N)
//	{
//		for (int i = 0; i < count; i++)
//		{
//			arr[i] = b % 10;
//			b /= 10;
//		}
//		for (int i = 0; i < count; i++)
//		{
//			for (int a = i+1; a < count; a++)
//			{
//				if (arr[i] == arr[a])
//					flag = 1;
//			}
//		}
//		return flag;
//	}
//	else
//		return flag;
//}


//本题要求实现一个计算非负整数阶乘的简单函数。
//int Factorial(const int N)
//{
//	if (N < 0)
//		return 0;
//	int ans = 0;
//	int eve = 1;
//	for (int i = 1; i <= N; i++)
//	{
//		eve *= i;
//		ans += eve;
//	}
//	return eve;
//}

//本题要求实现一个函数，可统计任一整数中某个位数出现的次数。例如 - 21252中，2出现了3次，则该函数应该返回3。
//int Count_Digit(const int N, const int D)
//{
//	int c;
//	if (N < 0)
//		c = (-N);
//	else if(N > 0)
//		c = N;
//	else
//		return 1;
//	int arr[100];
//	int count = 0;
//	int a = c;
//	while (a)
//	{
//		count++;
//		a /= 10;
//	}
//	a = c;
//	for (int i = 0; i < count; i++)
//	{
//		arr[i] = a % 10;
//		a /= 10;
//	}
//	int count2 = 0;
//	for (int i = 0; i < count; i++)
//	{
//		if (arr[i] == D)
//			count2++;
//	}
//	return count2;
//}


//本题要求实现一个打印非负整数阶乘的函数。
//void Print_Factorial(const int N)
//{
//	if (N < 0)
//		printf("“Invalid input”");
//	else
//	{
//		int eve = 1;
//		for (int i = 1; i <= N; i++)
//			eve *= i;
//		printf("%d", eve);
//	}
//}



//本题要求实现一个函数，求N个集合元素A[]的中位数，即序列中第⌊(N+1)/2⌋大的元素。
// 其中集合元素的类型为自定义的ElementType。

//#include<stdlib.h>
//int comp(void* p1, void* p2)
//{
//	return (*(float*)p1 - *(float*)p2);
//}
//
//ElementType Median(ElementType A[], int N)
//{
//	qsort(A, N, sizeof(float), comp);
//	if (N % 2 == 0)
//		return (A[N / 2 - 1] + A[N / 2]) / 2;
//	else
//		return A[N / 2];
//}
//#include <stdio.h>


//本题要求实现判断给定整数奇偶性的函数。
//int even(int n)
//{
//	if (n % 2 == 0)
//		return 1;
//	else
//		return 0;
//}

//给一个严格递增数列，函数int  Search_Bin(SSTable T, KeyType k)用来二分地查找k在数列中的位置。
#include<stdio.h>
void  Search_Bin(int arr[20], int k,int left,int right)
{
	while (left <= right)
	{
		int mid = (right - left) / 2 + left;
		if (arr[mid] > k)
			right = mid - 1;
		else if (arr[mid] < k)
			left = mid + 1;
		else
		{
			printf("找到了，下标时%d", mid);
			break;
		}
	}
	if (left > right)
	{
		printf("找不到");
	}
}

int main()
{
	int arr[] = { 1,2,3,5,7,9,10,12,14,16,18,19 };
	int left = 0;
	int right = sizeof(arr) / sizeof(arr[0]);
	int a;
	scanf("%d", &a);
	Search_Bin(arr, a,left,right);
	return 0;
}
